#给定字符串
s = "Python is great!"

# 完成以下题目
# 1. 字符串反转: 给定字符串`s = "Python is great!"`，不使用任何内置函数，编写代码以反转字符串。
reversed_str = ""
for char in s:
    reversed_str = char + reversed_str
print(reversed_str)

# 2. 字符计数: 对于同一个字符串`s`，计算字符 `t'` 在其中出现的次数。
count = 0
for char in s:
    if char == 't':
        count += 1
print(count)  

# 3. 替换字符: 把字符串`s` 中的所有空格替换成下划线 ``。
replaced = ""
for char in s:
    replaced += '_' if char == ' ' else char
print(replaced) 

# 4. 检查回文: 检查字符串`s2 = "A man, a plan, a canal, Panama!"` 在忽略大小写、标点和空格的情况下是否为回文字符串。
s2 = "A man, a plan, a canal, Panama!"
cleaned = ''.join(c.lower() for c in s2 if c.isalpha())
is_palindrome = cleaned == cleaned[::-1]
print(is_palindrome)

# 5. 子字符串查找: 在`s` 中查找第一次出现子字符串 `is"` 的位置。
index = -1
for i in range(len(s)-1):
    if s[i] == 'i' and s[i+1] == 's':
        index = i
        break
print(index)  

# 6. 字符串插入: 在`s` 中第一个 `t'` 字符之后插入子字符串`"_inserted"`。
insert_pos = s.find('t') + 1
new_str = s[:insert_pos] + "_inserted" + s[insert_pos:]
print(new_str)

# 7. 部分替换: 替换`s` 中第一次出现的 `great"` 为 `awesome"`。
new_s = s.replace('great', 'awesome', 1)
print(new_s)

# 8. 切片与拼接: 将`s` 切分为两部分，其中第一部分包含前半部分的字符，第二部分包含后半部分的字符，然后将这两部分以相反顺序拼接起来。
half = len(s) // 2
reversed_parts = s[half:] + s[:half]
print(reversed_parts)

# 9. 创建字符串列表: 使用列表生成式，根据字符串`s` 创建一个列表，其中包含`s` 的每个单词的首字母大写形式。
words = s.split()
capitalized = [word[0].upper() + word[1:] for word in words]
print(capitalized)

# 10. 字符替换加密: 编写一个函数`encrypt`，使用字典 `a: m, b: n, ... z: l}` 的对应规则加密字符串`s3 = "encryption"`。
def encrypt(text):
    mapping = {chr(i): chr((i - ord('a') + 13) % 26 + ord('a')) for i in range(ord('a'), ord('z')+1)}
    return ''.join(mapping.get(c.lower(), c) for c in text)

s3 = "encryption"
print(encrypt(s3))
